package fr.blogger.ejb.outils;

import javax.naming.InitialContext;
import javax.naming.NamingException;

import org.apache.commons.lang3.RandomStringUtils;

/** méthodes utilitaires pour l'application RECIF
 * 
 * @author l.parrot1
 * @version 0.1 */
public class UtilsEJB {

	/** nombre de caractères pour la génération du token */
	public final static int NOMBRE_CHAR_TOKEN = 15;
	/** nom du module EJB */
	public final static String NOM_MODULE_EJB = "blogger-ejb";

	/** Constructeur de la classe <code>UtilsEJB</code>. */
	public UtilsEJB() {
	}

	/** génère le token avec le nombre de caractère demandé
	 * 
	 * @return {@link String} */
	public static String generationToken() {
		return RandomStringUtils.randomAlphanumeric(NOMBRE_CHAR_TOKEN);
	}

	/** Récupère le service par rapport a son nom
	 * 
	 * @param classe {@link Class}<T>
	 * @return T */
	public static <T> T getService(Class<T> classe) {
		T service = null;
		try {
			InitialContext context = new InitialContext();
			String appName = (String) context.lookup("java:app/AppName");
			String jndi = String.format("java:global/%s/%s", appName, NOM_MODULE_EJB);
			service = (T) new InitialContext().lookup(String.format("%s/%s", jndi, classe.getSimpleName()));
		} catch (NamingException e) {
			e.printStackTrace();
		}
		return service;
	}

}
